package com.gylang.im.core.util;

import com.github.pagehelper.PageInfo;
import com.gylang.commons.dto.PageInfoDTO;

import java.util.ArrayList;
import java.util.List;


/**
 * pageHelper 分页对象转化成统一分页返回
 *
 * @author gylang,
 * date 2020/4/19,
 * @version 1.0
 */
public class PageInfoUtils {


    public static <T> PageInfoDTO<T> converter2PageInfoDTO(PageInfo<T> pageInfo) {

        PageInfoDTO<T> pageInfoDTO = new PageInfoDTO<>();
        pageInfoDTO.setPage(pageInfo.getPageNum());
        pageInfoDTO.setSize(pageInfo.getPageSize());
        pageInfoDTO.setTotalPage(pageInfo.getPages());
        pageInfoDTO.setTotalElement(pageInfo.getTotal());
        List<T> list = new ArrayList<>(pageInfo.getList());
        pageInfoDTO.setData(list);

        return pageInfoDTO;
    }

    /**
     * 拷贝PageInfoDTO到另一个DTO 不拷贝dataList
     * @param source 源
     * @param target 目标
     * @param <SOURCE> 源类型
     * @param <TARGET> 目标类型
     * @return 目标PageInfoDTO
     */
    public static <SOURCE, TARGET> PageInfoDTO<TARGET> converter2OtherPageInfoDto(PageInfoDTO<SOURCE> source, Class<TARGET> target) {

        PageInfoDTO<TARGET> targetPageInfoDTO = new PageInfoDTO<>();
        targetPageInfoDTO.setPage(source.getPage());
        targetPageInfoDTO.setSize(source.getSize());
        targetPageInfoDTO.setTotalPage(source.getTotalPage());
        targetPageInfoDTO.setTotalElement(source.getTotalElement());

        return targetPageInfoDTO;
    }
}
